#ifndef __OC_OpenGLDef_H__
#define __OC_OpenGLDef_H__

#if defined(_MSC_VER)
#ifndef OCOpenGL_EXPORTS
#define _openGLExport  __declspec(dllimport)
#else
#define _openGLExport  __declspec(dllexport)
#endif
#else
#define _openGLExport
#endif

#include "OCMain/Vector.h"
#include "OCMain/Matrix4.h"
#include "OCMain/OCMath.h"
#include "OCMain/Image.h"
#include "OCMain/PixelFormat.h"

#include "glm/glm.hpp"
#include "glm/gtc/matrix_transform.hpp"
#include "glm/gtc/type_ptr.hpp"

namespace OCPP
{
	class Texture;
	struct Vertex
	{
		Vector3 position;
		Vector3 normal;
		Vector3 color;
		Vector2 texUV;
	};

	typedef std::vector<Vertex> VertexList;

	struct VertexPCT
	{
		Vector3 position;
		Vector3 color;
		Vector2 texUV;
	};

	typedef std::vector<VertexPCT> VertexListPCT;
	typedef std::vector<uint32>	IndiceList;

	typedef std::shared_ptr<Texture> TexturePtr;
	typedef std::vector<TexturePtr> TextureList;
	typedef std::map<String,TexturePtr> TextureMap;

	typedef std::vector<Matrix4> Matrix4List;
}


class GLFWwindow;

#endif